/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mscs.cashier.logic;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import mscs.data.IFileDataStore;
import mscs.data.IGoodsDiscountProxy;
import mscs.data.IGoodsProxy;
import mscs.data.pojo.Goods;
import mscs.data.pojo.GoodsDiscount;

/**
 *
 * @author Cake
 */
public class BusinessRules {
    IFileDataStore allGoods=new IGoodsProxy();
    
    IFileDataStore allGoodsDiscount =new IGoodsDiscountProxy();
    List<GoodsDiscount> goodsDiscountList=(ArrayList<GoodsDiscount>)allGoodsDiscount.getObjects();
    
    public String dicountPrice(Goods goods){
        String dicount;
        GoodsDiscount goodsDiscount=new GoodsDiscount();
        
        for(GoodsDiscount goodsdiscount:goodsDiscountList){
           if( goodsdiscount.getId().equals( goods.getId())){
               goodsDiscount.setDiscountPrice(goodsdiscount.getDiscountPrice());
               goodsDiscount.setEndDate(goodsdiscount.getEndDate());
               goodsDiscount.setStartDate(goodsdiscount.getStartDate());
               goodsDiscount.setId(goodsdiscount.getId());
           }
        }
        //判断特价日期
        if(goodsDiscount.getStartDate().after(new Date())
           &&goodsDiscount.getEndDate().before(new Date())){
            dicount=((Double)goodsDiscount.getDiscountPrice()).toString();
        }else dicount="";
        
        return dicount;
    }
    
    /*
    BR1：适用（商品标识，参照日期）的商品赠送促销策略
（促销商品标识=商品标识） 而且（（开始日期早于等于参照日期）并且（结束日期晚于等于参照日期））
    */
    
    
     public boolean  BR1(String id,Date referenceDate){
       return true;
       
   } 
     
     /* 
BR2：适用（额度，参照日期）的总额赠送促销策略    
（促销额度<=额度）而且（（开始日期早于等于参照日期）并且（结束日期晚于等于参照日期））
    */
    
    
    
    
/* 
BR3：适用（商品标识，参照日期）的商品特价促销策略
（促销商品标识=商品标识） 而且（（开始日期早于晚于参照日期）并且（结束日期晚于等于参照日期））
BR4：适用（额度，参照日期）的总额特价促销策略
（促销额度<=额度）而且（不存在：本促销额度<另一个促销额度<=额度） 而且（（开始日期早于等于参照日期）并且（结束日期晚于等于参照日期））
BR5：积分兑换规则，该规则可能变化
50积分=1元RMB
BR6：退货日期约定
今天-销售日期>=15天
BR7：在参照日期时退货的赠品差
Pre=销售记录的普通商品总价-以前退货记录的普通商品总价之和
Post=Pre-本次退货记录的普通商品总价
Pre赠品=适用于（Pre，参照日期）的总额赠送策略（参见BR2）的赠送商品及数量
Post赠品=适用于（Post，参照日期）的总额赠送策略（参见BR2）的赠送商品及数量
赠品差=Pre赠品-Post赠品
BR8：在参照日期时退货的账款差
Pre=销售记录的普通商品总价-以前退货记录的普通商品总价之和
Post=Pre-本次退货记录的普通商品总价
Pre折扣率=适用于（Pre，参照日期）的总额赠送策略（参见BR4）的折扣率
如果无适用的总额赠送策略：Pre折扣率=100%
Post折扣率=适用于（Post，参照日期）总额赠送策略（参见BR4）的折扣率
如果无适用的总额赠送策略：Post折扣率=100%
账款差=Pre×Pre折扣率-Post×Post折扣率
BR9：一个店铺特定商品的预计天数和预计报废率计算规则
可存天数=最后一批入库商品的报废日期-当天日期
流通总量=最后一批入库商品数量+最后一批入库前库存-现在库存
尺度天数=今天距离最后一批入库商品的入库日期
每天流通量= 流通总量/尺度天数
如果每天流通量>0
预计天数= min（库存数量/每天流通量, 可存天数）
否则
预计天数 无意义

如果 预计天数有意义 并且 预计天数<可存天数
预计报废率=0
如果 预计天数有意义 并且预计天数>可存天数
预计报废率=（预计天数-可存天数）/预计天数
否则
预计报废率 无意义
BR10：礼品赠送规则，积分数额档可能发生变化
如果会员的出生日期距当天在3天之内，包括3天，触发“生日”礼品赠送事件
在会员积分数额初次超档时，触发“积分”礼品赠送事件
积分数额档初始为1000、2000、5000，此后每增加5000为一档. 
多个礼品赠送事件可以同时发生
每个会员由其所注册的店铺进行礼品赠送服务
BR11：一个商品赠送策略存在重复的判定规则
S1为指定的商品赠送策略
S2为其他的商品赠送策略
如果存在满足下列条件的S2，则指定商品赠送策略存在重复：
(S1.促销商品标识=S2.促销商品标识 并且 S1.赠品标识=S2.赠品标识) 并且
((S1.开始日期早于等于S2的结束日期 并且 S1.开始日期晚于等于S2的开始日期) 或者
（S2.开始日期早于等于S1的结束日期 并且 S2.开始日期晚于等于S1的开始日期））
BR12：一个商品特价策略存在重复的判定规则
S1为指定的商品特价策略
S2为其他的商品特价策略
如果存在满足下列条件的S2，则指定商品特价策略存在重复：
(S1.促销商品标识=S2.促销商品标识) 并且
((S1.开始日期早于等于S2的结束日期 并且 S1.开始日期晚于等于S2的开始日期) 或者
（S2.开始日期早于等于S1的结束日期 并且 S2.开始日期晚于等于S1的开始日期））
BR13：一个总额赠送策略存在重复的判定规则
S1为指定的总额赠送策略
S2为其他的总额赠送策略
如果存在满足下列条件的S2，则指定总额赠送策略存在重复：
(|S1.额度-S2.额度|<50 并且 S1.赠品标识=S2.赠品标识) 并且
((S1.开始日期早于等于S2的结束日期 并且 S1.开始日期晚于等于S2的开始日期) 或者
（S2.开始日期早于等于S1的结束日期 并且 S2.开始日期晚于等于S1的开始日期））
BR14：一个总额特价策略存在重复的判定规则
S1为指定的总额特价策略
S2为其他的总额特价策略
如果存在满足下列条件的S2，则指定总额特价策略存在重复：
(|S1.额度-S2.额度|<30) 并且
((S1.开始日期早于等于S2的结束日期 并且 S1.开始日期晚于等于S2的开始日期) 或者
（S2.开始日期早于等于S1的结束日期 并且 S2.开始日期晚于等于S1的开始日期））

   */ 
}
